//Task.hpp
#pragma once
#include <iostream>
#include <unistd.h>
#include<string>
using namespace std;
//阻塞队列中的内容，生产者生产，消费者消费
class Task
{
    public:
    Task()
    {}

    Task(int x,int y,char op)
    :_x(x),_y(y),_op(op)
    {}

    void operator()()
    {
        switch(_op)
        {
            case '+':
                    _result=_x+_y;
                    break;
            case '-':
                    _result=_x-_y;
                    break;
            case '/':
                    if(_y==0)
                    {
                        _code=-1;
                        break;
                    }
                    _result=_x/_y;
                    break;
            case '*':
                    _result=_x*_y;
                    break;
            case '%':
                    if(_y==0)
                    {
                        _code=-2;
                        break;
                    }
                    _result=_x%_y;
                    break;
        default:
                _code=-3;
                break;
        }
    }

    string to_productor()//打印productor生产的内容是什么
    {
        return to_string(_x)+_op+to_string(_y)+"=?";
    }

    string to_customer()//打印customer消费后的结果为什么
    {
        return to_string(_x)+_op+to_string(_y)+"="+to_string(_result)+";code="+to_string(_code);
    }



    private:
    int _x;//操作数
    int _y;//操作数
    char _op;//计算方法
    int _result=0;//计算结果
    int _code=0;//计算后的返回码
};


//_code:
//-1 -> /出错
//-2 -> %出错
//-3 -> _op出错